package model.effect;

import model.Model;
import model.entity.BasicEntity;
import utilities.*;

/**
 * The class that defines the type for Effects, to abstract the idea of affecting an effect on an entity.
 * This class can be subclassed and doEffect overridden to add new Effects.
 */
public abstract class Effect extends Model implements Archiveable {
	
	public Effect(String name)
	{
		super(name);
	}

	public Effect(){}
	
	abstract public void doEffect(BasicEntity ent);

	@Override
	public String toString()
	{
		return super.toString() + "Effect []";
	}
	
	public Archive save() {
		Archive archive = super.save();
		
		return archive;
	}
	
	public void load(Archive archive) {
		super.load(archive);
	}
	
}
